#ifndef RULLO_H_
#define RULLO_H_

#define MAX_BUFFER 12
#define MAX_SIMBOLI 12
#define OFFSET_VERTICALE_SIMBOLO 15
#define OFFSET_ORIZZONTALE_SIMBOLO 22
#define NUM_CELLE 1
#define SPAZIO_TRA_CELLE 0
#define NUM_STEPS_SCORRIMENTO_TOTALE 11

#define IMM_RULLO "Cella_Rullo"
#define IMM_COPERTURA "Copertura"

struct SIMBOLO 
{
	int ID;
	std::string Nome;
};

class Rullo
{
public:
	Rullo();
	~Rullo();

	void RiempiVettoreSimboli();
	int TornaDimOriz();
	void Inizializza(int [], int );
	void Update();
	void Disegna();
	void SetLivelliYInizialiSimboli();
	void IncrementoStep();
	void AggiornaIndiciStep();
	void DisegnaStruttura(int , int );
	void Scorri(float , int , int);
	void SistemaSimboli();

public:
	CL_ResourceManager *risorse;

	CL_Surface *cella;
	CL_Surface *coperturasup;
	CL_Surface *coperturainf;

	CL_Sprite *simboli1;
	CL_Sprite *simboli2;
	CL_Sprite *simboli3;
	CL_Sprite *simboliAPP;

	CL_Color coloreKey;

	int num_simboli;

	int xRullo;
	int yRullo;
	int yFinaleRullo;

	int y1;
	int y2;
	int y3;
	int y4;
	int y0;

	int ySimb1;
	int ySimb2;
	int ySimb3;
	int ySimbAPP;

	int vettore[MAX_BUFFER];
	int num_step;

	int IND_SIMBOLO_APP;
	int IND_STEP;
	int STEPS;

	int steps_da_fare;

	int fermo_step;

	SIMBOLO vettore_simboli[MAX_SIMBOLI];

	float speed_simboli;

	bool inizio;
	bool stop;
};

#endif /*RULLO_H_*/
